PolarDB提供了很多函数,用于返回与当前日期和时间相关的值。
所有这些函数的返回值都是基于当前事务的开始时间。
- CURRENT_DATE
- CURRENT_TIMESTAMP
- LOCALTIMESTAMP
- LOCALTIMESTAMP(precision)
CURRENT_DATE返回的是基于当前事务起始时间的当前日期和时间。如果在一个事务中同时调用多个时间,那么CURRENT_DATE值将不会发生改变。
SELECT CURRENT_DATE FROM DUAL;
date
-----------
06-AUG-07
CURRENT_TIMESTAMP返回的是当前日期和时间。当从一个SQL语句中调用时,它将返回SQL语句中每次出现的相同值。如果在一个事务中同时调用多个语句,那么可能返回每次出现的不同值。如果在函数中调用语句,那么它可能返回不同的值,而不是在调用中由当前时间截返回的单一值。
SELECT CURRENT_TIMESTAMP, CURRENT_TIMESTAMP FROM DUAL;
current_timestamp | current_timestamp
----------------------------------+----------------------------------
02-SEP-13 17:52:29.261473 +05:00 | 02-SEP-13 17:52:29.261474 +05:00
可以选择性地给予LOCALTIMESTAMP一个精确参数,且这个精确参数可以使结果四舍五入到秒字段的小数。如果不指定精确参数,那么结果为可得到的完整精度。
SELECT LOCALTIMESTAMP FROM DUAL;
timestamp
------------------------
06-AUG-07 16:11:35.973
(1 row)
SELECT LOCALTIMESTAMP(2) FROM DUAL;
timestamp
-----------------------
06-AUG-07 16:11:44.58
(1 row)
这些函数返回当前事务的开始时间,但是它们的值在事务运行期间不改变。这是一个值得考虑的特性:它的目的是允许单个事务有一致的当前时间,所以在同一事务中进行多个修改操作使用相同时间戳。其他数据库系统可以更频繁的使用这些值。